% !Mode:: "TeX:UTF-8"

\section{个人贡献}

\subsection{物料采购与管理}
作为学生成员，我主要参与了本项目核心物料的采购与管理工作，具体内容包括：
\begin{itemize}
    \item 根据小组讨论和设计方案，协助整理并完善BOM物料清单（如STM32F103开发板、DHT11温湿度传感器、红外人体检测模块、OLED显示屏、矩阵按键、蜂鸣器、风扇及驱动电路、蓝牙串口模块等），力求确保所有必需元件齐备。
    \item 参考组员建议，综合考虑价格、质量和运输周期，选择合适渠道下单采购。
    \item 参与物料到货后的清点和分类管理，与组员协作分发元件，保证项目进展顺利。
    \item 在采购过程中如遇不确定或选择困难的情况，及时向小组其他成员请教并采纳合理建议。
\end{itemize}

\subsection{核心代码实现}
在代码实现部分，我在组员的指导与协助下，积极参与了以下工作：
\begin{itemize}
    \item 参与编写DHT11温湿度采集、红外检测、OLED显示、矩阵按键、蜂鸣器、蓝牙串口、风扇PWM等基础驱动代码。遇到难点时，虚心向经验丰富的同学请教，经过讨论逐步解决问题。
    \item 主要负责主程序\verb|main.c|中有关\textbf{档位与速度调节}、\textbf{倒计时定时功能}、\textbf{蓝牙遥控与串口通信}等模块的功能实现，保证各模块之间的逻辑衔接顺畅。
    \item 在组员的帮助下，完成了手动与自动模式的切换、OLED界面数据显示以及倒计时结束后的复位操作等核心流程。
    \item 积极参与系统调试与单元测试，发现问题后与团队共同分析并优化代码，提升系统稳定性和易用性。
\end{itemize}

\subsection{OLED界面与交互体验}
\begin{itemize}
    \item 参与设计了OLED菜单显示界面，实现了温度、湿度、模式、档位、速度、倒计时等参数的动态展示，方便用户实时了解设备状态。
    \item 针对不同工作模式，和组员一起优化界面内容切换与操作提示，提升了系统的人机交互体验。
    \item 结合实际测试反馈，持续对显示细节进行调整，努力让界面更加直观、易用。
\end{itemize}

\subsection{问题分析与持续改进}
\begin{itemize}
    \item 在项目过程中，遇到软件调试、硬件兼容性等难题时，主动与组员沟通，查阅资料并尝试多种解决方案。
    \item 针对红外检测、PWM调速、蓝牙通信等部分功能，积极参与调试与优化，积累了实际开发经验。
    \item 参与集成测试与问题排查，通过团队合作，不断完善系统功能，提升项目整体质量。
\end{itemize}

\subsection{个人成长与收获}
\begin{itemize}
    \item 虽然个人能力有限，但在本项目中通过与组员的密切交流和协作，提升了嵌入式开发实操能力。
    \item 在物料采购、代码编写、系统调试等环节得到了宝贵的经验，也学会了如何高效利用团队资源和力量解决问题。
    \item 感谢组员的支持和帮助，使我能够顺利完成分配任务，为小组项目的成功做出自己的贡献。
\end{itemize}

\subsection{开发中遇到的问题及解决方案}

\subsubsection{问题描述}
在实现\textbf{单片机向手机发送温湿度}功能时，最初我们的设想是在主函数的循环中直接加入温湿度数据的串口发送代码。这样做的结果是：单片机会不停地向手机端连续发送温湿度数据，导致手机界面数据刷屏，且无法与其他指令正常交互。当手机端通过蓝牙发送指令后，单片机不会再继续发送温湿度数据，通信逻辑混乱，无法实现预期的按需查询。

\subsubsection{解决方案}
在组员的建议和帮助下，我们对代码逻辑进行了优化，将温湿度数据的发送功能单独放入蓝牙通信中断服务函数（USART1\_IRQHandler）的命令分支内，具体做法如下：
\begin{itemize}
    \item 在蓝牙串口接收到手机端发送的特定指令（如字符 \texttt{E}）时，单片机调用温湿度采集函数，获取当前温度和湿度。
    \item 组装温湿度数据字符串，通过串口将结果返回给手机端，仅在收到请求时发送数据，避免了无效的重复推送。
    \item 该逻辑已在前述代码的 \texttt{case 'E'} 分支中实现，经调试后通信稳定，达到了手机端随时查询、单片机实时响应的效果。
\end{itemize}

\textbf{经验收获：} 通过此次问题的分析和解决，我认识到在嵌入式系统与上位机交互设计时，合理使用事件触发和中断机制能够显著提升系统的稳定性和用户体验。同时，也学会了在功能需求与实际效果不一致时，及时与组员沟通、优化方案的重要性。

\subsubsection{问题描述}
在项目开发过程中，蓝牙模块接入初期遇到了一个较为棘手的问题：虽然蓝牙通信相关代码本身没有报错，但程序下载到单片机后，原本功能正常的按键模块突然全部失灵，无法再响应用户操作。

\subsubsection{原因分析}
经过与组员讨论和多轮调试，我们推测问题的根源在于\textbf{蓝牙与按键模块共用了同一个指令变量}。在原有逻辑下，蓝牙模块一旦接收到数据，会直接覆盖掉按键产生的指令值，导致后续主循环中按键输入无法被正确识别和处理，从而表现为所有按键失效。

\subsubsection{解决方案}
在组员的建议和帮助下，我们对程序结构进行了优化，采取如下措施：
\begin{itemize}
    \item 明确区分蓝牙输入和按键输入，分别使用不同的变量（例如 \texttt{BluetoothKey} 和 \texttt{KeyNum}）来存储各自的输入值，避免互相干扰。
    \item 在主循环逻辑中，优先判断蓝牙输入是否有效，如有蓝牙指令则先处理，并在处理后及时清空蓝牙变量，确保按键输入能正常参与后续判断。
  
    \item 经过上述调整后，无论是蓝牙远程控制还是本地按键操作，都能被系统正确识别和响应，极大提升了系统的健壮性和用户体验。
\end{itemize}

\textbf{经验总结：} 通过该问题的解决，我认识到在多输入源共存的系统设计中，必须合理区分并管理各类输入，避免不同模块间的变量冲突。同时，也深刻体会到团队协作和问题复盘对于复杂系统开发的重要性。